package com.cskaoyan.javase.oop1._16oop;
/**
 * 语言特性和程序开发思想是不同的:
 * 面向对象可以是语言的特性,也可以是思想
 * Java是具有面向对象语言特性的语言,java当中明确有语法实现对象,类,封装继承多态等面向对象的概念,包括C++,C#,Python,它们都是这样的
 * C语言不具有面向对象的特性,因为它没有类也没有对象的概念
 *
 * 但是Java仍然可以写出具有面向过程思想的程序,只要不创建对象,只依赖于方法调用,一步一步完成程序开发,这就是面向过程的思想
 *
 * C语言当中虽然没有直接类和对象的概念,但可以结构体(struct)看成是一个类或者对象,然后通过特殊的手段也能实现封装继承多态,这种方式实现的程序仍然是具有面向对象思想的.
 *
 *
 * 现在我们用面向过程的思想写: 把大象放进冰箱里
 * 程序的功能依靠方法调用实现:
 *      1.打开冰箱门
 *      2.把大象放进去
 *      3.关闭冰箱门
 *
 * 面向过程思想程序的优点:
 *      1.简单直接,直接考虑程序的执行的每个流程,然后一步一步完成程序的开发.
 *      2.面向过程的代码往往简洁明了，配合良好数据结构设计，程序的执行效率也很高。
 * 面向过程思想程序的缺点:
 *      1.写代码之前,需要严格考虑每一步的实现方式,结果,这需要耗费很大的精力.也容易出现考虑不周的情况
 *          所以程序如果比较复杂,就很难办了.
 *      2.面向过程的程序对程序员要求比较高,系统中的每个流程都要熟悉.分工协作的效率很差
 *          所以如果程序很复杂,就不适合了
 *      3.一个方法就做一个方法的任务，代码几乎不能重复利用，要想新增或修改一个功能，几乎又是从头再来。导致程序几乎没有扩展性，可维护性很差。
 *
 *    综上,面向过程思想的程序,只适合开发短小精悍的程序.如果比较复杂,需求比较多,变更比较多,就不适合使用面向过程了
 *    如果简简单单就是为了实现一个小功能,小需求,面向过程确实是足够的,但是一旦软件规模扩大,它就不适用.
 *
 * @since 10:59
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        openFridgeDoor();
        elephantIntoFridge();
        closeFridgeDoor();
    }

    public static void openFridgeDoor(){
        System.out.println("开门,大象要进来了!");
    }
    public static void elephantIntoFridge(){
        System.out.println("我进来了,关门!");
    }
    public static void closeFridgeDoor(){
        System.out.println("关门,收工,下班!");
    }
}
